<?php

class ContractEquipmentController extends Controller
{

    /**
     * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
     * using two-column layout. See 'protected/views/layouts/column2.php'.
     */
    public $layout = '//layouts/column2';

    /**
     * @return array action filters
     */
    public function filters()
    {
        return array(
            'accessControl', // perform access control for CRUD operations
            array(
                'application.filters.RequireLoginFilter',
            ),
        );
    }

    /**
     * Displays a particular model.
     * @param integer $id the ID of the model to be displayed
     */
    public function actionList($contractid, $page = 1, $sort = NULL, $dir = NULL)
    {
        //we decrease $page by 1 because in Extjs first page is 1, but in our sql first page is 0;
        if ($page > 0)
            $page--;

        $crit = new CDbCriteria();
        $crit->condition = 'contractid=:contractid';
        $crit->params = array(
            'contractid' => $contractid,
        );

        $order = CJSON::decode($sort);
        if ($sort != NULL)
        {
            $crit->order = $order[0]['property'] . ' ' . $order[0]['direction'];
        }

        $data = new CActiveDataProvider('ContractEquipment', array(
                    'criteria' => $crit,        
                    'pagination'=>array(
                        'pageSize'=>25,
                        'currentPage'=>$page
                    )
                ));

        if ($data != NULL && count($data->getData()) > 0)
        {
            $rs = array();
            $rs['totalCount'] = $data->getTotalItemCount();
            foreach ($data->getData() as $i => $item)
            {
                $original = Equipment::model()->findByPk($item->equipmentid);
                $rs['data'][$i] = $item->attributes;

                $rs['data'][$i]['sltext'] = FlOptions::model()->getText($item->sl);

                $rs['data'][$i]['planTypeText'] = $item->PlanTypeText;
                if ($original!=null)
                {
                    $rs['data'][$i]['description'] = $original->description;
                    $rs['data'][$i]['model'] = $original->model;
                }
            }
            echo json_encode($rs);
        }
        Yii::app()->end();
    }
    public function actionSaveList(){
        if(isset($_POST['data']) && isset($_POST['contractid'])){
            $contractid=$_POST['contractid'];

            $contractModel = Contracts::model()->findByPk($contractid);
            
                foreach($_POST['data'] as $item){
                    if(isset($item[0]) && $item[0]=='delete'){
                        $model = $this->loadModel($item[1]);
                        $original = Equipment::model()->findByPK($model->equipmentid);
                        $original->seragrno = '';                    
                        $model->delete();
                        
                        //delete old ledger
                        $ledger = ContractLedger::model()->find('contractid=:contractid and partno=:partno',array(
                            'contractid'=>$_POST['contractid'],
                            'partno'=>'HIST1'
                        ));
                        if($ledger){
                            $ledger->delete();
                        }
                    }else{
                        $model=null;
                        if(isset($item['id']) && $item['id']!=0){
                            $model=$this->loadModel($item['id']);
                        }else{
                            $model=new ContractEquipment;
                        }
                        $model->equipmentid=$item['equipmentid'];
                        $model->contractid=$contractid;
                        $model->sl=$item['sl'];
                        $model->pmr=$item['pmr'];
                        $model->price=$item['price'];
			$model->prorate=$item['prorate'];
			$model->prorate_notes=$item['prorate_notes'];
                        $model->qty=$item['qty'];
                          if($contractModel->contractype==4){
                            $model->mfg = $item['mfg'];
                            $model->serial = $item['serial'];
                            $model->model = $item['model'];
                        }
                        $original = Equipment::model()->findByPK($model->equipmentid);                    
                        $model->planid = $item['planid'];                    
                        $original->plan = $model->planid;
                        $original->seragrno = $model->contractid;
                        $original->pmrequired = $model->pmr;
                        $original->sl = $model->sl;
                        $original->save();
                        $model->save();
                        
                        echo json_encode($model->getErrors());
                    }
                }
            
        }
    }
    /**
     * Creates a new model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     */
    public function actionCreate($contractid)
    {
        $dataArray = json_decode($_POST['data'], true);

        foreach ($dataArray as $item)
        {
            $original = Equipment::model()->findByPK($item['id']);
            $model = new ContractEquipment();
            $model->contractid = $contractid;
            $model->equipmentid = $item['id'];
            $model->qty = 1;
            $model->pmr = 0;
            $model->planid = -1;
            $original->seragrno = $contractid;
            $original->validate();
            print_r($original->Errors);
            echo CActiveForm::validate($original);
            var_dump($original->save());
            $model->save();
        }
    }

    /**
     * Updates a particular model.
     * If update is successful, the browser will be redirected to the 'view' page.
     * @param integer $id the ID of the model to be updated
     */
    public function actionUpdate($id)
    {
        $model = $this->loadModel($id);
        $original = Equipment::model()->findByPK($model->equipmentid);

        $model->attributes = $_POST;
        if (!empty($_POST['planTypeText']))
        {
            $model->planid = $_POST['planTypeText'];
        }
        $original->plan = $model->planid;
        $original->seragrno = $model->contractid;
        $original->pmrequired = $model->pmr;
        $original->sl = $model->sl;
        $original->save();
        if ($model->save())
        {
            echo json_encode(true);
        }
    }

    /**
     * Deletes a particular model.
     * If deletion is successful, the browser will be redirected to the 'admin' page.
     * @param integer $id the ID of the model to be deleted
     */
    public function actionDelete($id)
    {
		
        // we only allow deletion via POST request
        $model = $this->loadModel($id);
        $original = Equipment::model()->findByPK($model->equipmentid);
        $original->seragrno = '';
        var_dump($original->save());
        
		$model->delete();
		$data = $this->checkModel($_GET['contractid'],$_GET['equipmentid']);
		if ($data!=false)
		{
			$data->delete();
		}
    }
	
	public function checkModel($contractid, $equipmentid)
	{
		$model = ContractEquipSchedule::model()->find('contractid=:contractid AND equipmentid=:equipmentid',array(':equipmentid'=>$equipmentid,':contractid'=>$contractid));
		if (isset($model))
			return $model;
		return false;
	}
	
	private function actionDeleteEquipment($id, $contractid, $equipmentid)
	{
	//	$model = ContractEquipment::model()->findByPk($id);
		// $
	}

    /**
     * Lists all models.
     */
    public function actionIndex()
    {
        $dataProvider = new CActiveDataProvider('ContractEquipment');
        $this->render('index', array(
            'dataProvider' => $dataProvider,
        ));
    }

    /**
     * Manages all models.
     */
    public function actionAdmin()
    {
        $model = new ContractEquipment('search');
        $model->unsetAttributes(); // clear any default values
        if (isset($_GET['ContractEquipment']))
            $model->attributes = $_GET['ContractEquipment'];

        $this->render('admin', array(
            'model' => $model,
        ));
    }

    /**
     * Returns the data model based on the primary key given in the GET variable.
     * If the data model is not found, an HTTP exception will be raised.
     * @param integer the ID of the model to be loaded
     */
    public function loadModel($id)
    {
        $model = ContractEquipment::model()->findByPk($id);
        if ($model === null)
            throw new CHttpException(404, 'The requested page does not exist.');
        return $model;
    }

    /**
     * Performs the AJAX validation.
     * @param CModel the model to be validated
     */
    protected function performAjaxValidation($model)
    {
        if (isset($_POST['ajax']) && $_POST['ajax'] === 'contract-equipment-form')
        {
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }
    }

}
